package com.fastloan.jn.mgt.process.service;


import com.fastloan.jn.mgt.application.basic.enums.ApplicationStatus;
import com.fastloan.jn.mgt.process.core.ReturnData;
import com.fastloan.jn.mgt.process.exception.AppApproveException;
import com.fastloan.jn.mgt.process.model.JnAppApprove;
import com.fastloan.jn.mgt.process.model.JnAppApproveUser;
import com.fastloan.jn.mgt.process.model.vo.AppApproveVo;
import com.kawins.base.BaseService;

import java.util.List;

/**
 * 进件审批
 *
 * @author chenkai
 *         createTime 2017-02-2017/2/14 9:44
 */
public interface AppApproveService extends BaseService<JnAppApprove> {

    /**
     * 添加审批日志信息并更新进件状态
     *
     * @param approveUser 用户信息
     * @param applicationStatus 进件状态
     * @return 数据库变记录
     */
    int insertApproval(JnAppApproveUser approveUser, ApplicationStatus applicationStatus);

    /**
     * 用户审批操作
     * @param appApproveUser 审批用户
     * @param applicationId 进件id
     */
    ReturnData appApproveUserService(JnAppApproveUser appApproveUser, String applicationId) throws AppApproveException;

    /**
     * 获取此进件完整审批链
     * @param applicationId 进件id
     * @param flag 0 当前节点, 1所有节点
     * @return 审批链
     * @throws AppApproveException 审批异常
     */
    List<AppApproveVo> getApproveChain(String applicationId, int flag) throws AppApproveException;

    /**
     * 删除进件审批相关信息
     * @param application 进件id
     * @return 数据库变更记录
     */
    Integer deleteAppApprove(String application);

    /**
     * 查询审贷会是否审批过
     * @param applicationId 进件id
     * @param approveReviewId 审贷会id
     * @return 通过.没通过
     */
     Boolean queryExamineApproving(String applicationId, String approveReviewId);

}
